package com.xframework.dao;

import org.springframework.jdbc.datasource.lookup.AbstractRoutingDataSource;

import java.util.HashMap;
import java.util.Map;

/**
 * 获取数据源，用于动态切换数据源
 */
public class DynamicDataSource extends AbstractRoutingDataSource {
    private static final String COMMA = ",";
    public static Map<String, String[]> METHOD_TYPE_MAP = new HashMap<String, String[]>();

    /**
     * 实现父类中的抽象方法，获取数据源名称
     *
     * @return
     */
    @Override
    protected Object determineCurrentLookupKey() {
        return DynamicDataSourceHandler.getDataSource();
    }

    // 设置方法名前缀对应的数据源
    public void setMethodType(Map<String, String> methodTypeMap) {
        methodTypeMap.forEach((dataSourceKey, prefixStr) -> {
            String[] prefixArray = prefixStr.split(COMMA);
            METHOD_TYPE_MAP.put(dataSourceKey, prefixArray);
        });
    }

}
